package org.example.design.exerciseold.resegregated;

/**
 * @Auther: lingshi
 * @Date: 2020/5/8 12:42
 * @Description:  接口隔离：多个专门的接口，每个接口对应具体的行为，使用时根据业务场景来组装具体的行为接口
 * v1 所示虽然定义了公用行为接口，但是dog 是不具备fly接口 所以从业务逻辑来讲就不因该有这种情况
 * v2 版本就是将它的行为在细分，每个不同的行为对应一个接口（当然在实际开发需要根据业务场景酌情考虑）
 *  优点: 降低了代码的耦合性、挺高可扩展性、可维护性、可读性
 *  缺点：代码逻辑、依赖关系更加复杂
 */
public class AnimalTest {

    public static void main(String[] args) {
        /**
         * v1 接口无隔离
         */
        Dog dos = new Dog();
        dos.eat();
        dos.swim();

        /**
         * v2
         */
        Peacock pe = new Peacock();
        pe.eat();
        pe.fly();
    }

}
